#include <iostream>

using namespace std;

//快排使用递归的思想，将数组设立两个便签点，递归的每一趟判断便签点的大小并进行交换，
//  两者到中点之后将分开的两部分分别递归排序
void quicksort(int *a,int beginone,int endone)
{
    int i,j,temp;
    i=beginone;
    j=endone;
    if(beginone<endone){
        temp=a[beginone];
        while(i!=j){
            while(j>i&&a[j]>=temp){
                --j;
            }
            if(i<j){
                a[i]=a[j];
                ++i;
            }
            while(i<j&&a[i]<temp){
                ++i;
            }
            if(i<j){
                a[j]=a[i];
                --j;
            }
        }
        a[i]=temp;
        quicksort(a,beginone,i-1);
        quicksort(a,i+1,endone);
    }
}

int main()
{
    cout<<"查找第?个最大元素"<<endl;
    int k;
    cin>>k;
    int *arr;
    cout<<"输入数组"<<endl;
    arr=new int[10];
    for(int i=0;i<10;i++)
    {
        cin>>arr[i];
    }

    quicksort(arr,0,9);
    for(int j=0;j<10;j++){
        cout<<arr[j]<<endl;
    }
    cout<<arr[k-1]<<endl;
    return 0;
}
